Skip to content

Latest commit

 

History

History
63 lines (50 loc) · 1.8 KB

File metadata and controls

63 lines (50 loc) · 1.8 KB

988. Smallest String Starting From Leaf

You are given the root of a binary tree where each node has a value in the range [0, 25] representing the letters 'a' to 'z'.

Return the lexicographically smallest string that starts at a leaf of this tree and ends at the root.

As a reminder, any shorter prefix of a string is lexicographically smaller.

  • For example, "ab" is lexicographically smaller than "aba".

A leaf of a node is a node that has no children.

Example 1:

Input: root = [0,1,2,3,4,3,4] Output: "dba" 

Example 2:

Input: root = [25,1,3,1,3,0,2] Output: "adz" 

Example 3:

Input: root = [2,2,1,null,1,0,null,0] Output: "abc" 

Constraints:

  • The number of nodes in the tree is in the range [1, 8500].
  • 0 <= Node.val <= 25

Solutions (Python)

1. Solution

# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclassSolution: defsmallestFromLeaf(self, root: Optional[TreeNode]) ->str: returnself.dfs("", root) defdfs(self, s: str, root: Optional[TreeNode]) ->str: ifrootisNone: returnss=chr(root.val+97) +sifroot.leftisNone: returnself.dfs(s, root.right) elifroot.rightisNone: returnself.dfs(s, root.left) else: returnmin(self.dfs(s, root.left), self.dfs(s, root.right))
close